package com.zmn.plat.services.impl.message;

import java.util.Collections;
import java.util.List;
import java.util.Objects;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zmn.common.utils.collection.CollectionUtil;
import com.zmn.common.utils.number.NumberUtil;
import com.zmn.plat.model.entity.message.MsgWechatTemplate;
import com.zmn.plat.persistence.interfaces.message.MsgWechatTemplateDAO;
import com.zmn.plat.services.interfaces.message.MsgWechatTemplateService;

import lombok.extern.slf4j.Slf4j;

/**
 * 描述: 基础接口实现类
 *
 * @author tanghongjun
 * @since 2020-06-19 15:34:59
 **/
@Slf4j
@Service
public class MsgWechatTemplateServiceImpl implements MsgWechatTemplateService {

    private static final String TAG = "基础服务接口";

    @Resource
    private MsgWechatTemplateDAO msgWechatTemplateDao;

    @Override
    public MsgWechatTemplate findById(Integer msgWechatTemplateId) {

        if (Objects.isNull(msgWechatTemplateId)) {
            log.error("[{}],根据id查询数据msgWechatTemplateId为null", TAG);
            return null;
        }
        return msgWechatTemplateDao.findById(msgWechatTemplateId);
    }

    @Override
    public MsgWechatTemplate findMsgWechatTemplateByTemplateIdAndWechatAppId(Integer templateId, String wechatAppId) {

        if (NumberUtil.isNullOrZero(templateId)) {
            return null;
        }
        return msgWechatTemplateDao.findMsgWechatTemplateByTemplateIdAndWechatAppId(templateId, wechatAppId);
    }

    @Override
    public List<MsgWechatTemplate> listByTemplateId(Integer templateId) {

        if (NumberUtil.isNullOrZero(templateId)) {
            log.error("[{}],根据模板id查询配置的微信数据模板id为0或者null", TAG);
            return Collections.emptyList();
        }
        return msgWechatTemplateDao.listByTemplateId(templateId);
    }

    @Override
    public Integer updateByKey(MsgWechatTemplate msgWechatTemplate) {

        if (Objects.isNull(msgWechatTemplate.getWechatTempId())) {
            log.error("[{}],根据id修改数据,msgWechatTemplate为null", TAG);
            return null;
        }
        return msgWechatTemplateDao.updateByKey(msgWechatTemplate);
    }

    @Override
    public Integer insert(MsgWechatTemplate msgWechatTemplate) {

        if (Objects.isNull(msgWechatTemplate)) {
            log.error("[{}],新增数据,msgWechatTemplate为null", TAG);
            return null;
        }
        return msgWechatTemplateDao.insert(msgWechatTemplate);
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void insertBatch(List<MsgWechatTemplate> msgWechatTemplateList) {

        if (CollectionUtil.isNullOrEmpty(msgWechatTemplateList)) {
            log.error("[{}],新增数据,msgWechatTemplateList为null", TAG);
            return;
        }
        Integer templateId = msgWechatTemplateList.stream().findAny().orElse(new MsgWechatTemplate()).getTemplateId();
        if (NumberUtil.isNotNullOrZero(templateId)) {
            msgWechatTemplateDao.deleteByTemplateId(templateId);
            msgWechatTemplateDao.insertBatch(msgWechatTemplateList);
        }
    }

}